[Talend]tWarnを利用してジョブの警告をハンドリングする
はじめに
こんにちは。DI部の大高です。
今回はTalendのコンポーネント「tWarn」を利用したジョブの警告ハンドリングを紹介したいと思います。
前提条件
Talendのバージョンは「Talend Open Studio for Big Data」の「Version 7.1.1」で検証しています。
tWarnについて
「tWarn」を利用するとジョブに対して警告を発生させることができます。これを「tLogCatcher」を利用してハンドリングすることができます。
「tWarn」コンポーネントのTalend Helpページはこちらです。
なお「tLogCatcher」については、下記の記事でご紹介していますのでご参照ください。
[Talend]tLogCatcherを利用してジョブの例外をハンドリングする | DevelopersIO
では、具体的に以下で解説していきます。
ジョブの説明
「tWarn」で意図的に警告を発生させて「tLogCatcher」で「tWarn」をハンドリングをし、「tLogRow」で警告内容を出力しています。また、その後に「tJava」で「tWarn」を通過後も処理が継続されることを確認しています。
「tWarn」コンポーネントの設定
「tWarn」コンポーネントでは、「警告メッセージ」、「コード」、「優先度」の3つを設定して警告を発生させています。今回はすべてデフォルトの値のままにしています。
警告メッセージ
「tLogCatcher」におけるmessage
カラムに渡されるメッセージの値になります。
コード
「tLogCatcher」におけるcode
カラムに渡されるコードの値になります。
優先度
「tLogCatcher」におけるpriority
カラムに渡される優先度の値になります。なお、優先度と値の関係は以下の通りです。
優先度 | 値 |
---|---|
トレース | 1 |
デバッグ | 2 |
情報 | 3 |
警告 | 4 |
エラー | 5 |
致命的 | 6 |
「tLogCatcher」コンポーネントの設定
「tLogCatcher」は以下のように設定し「tWarn」をハンドリングするように設定しました。
こちらのコンポーネントの詳細については以下の記事もご参照ください。
[Talend]tLogCatcherを利用してジョブの例外をハンドリングする | DevelopersIO
「tLogRow」コンポーネントの設定
「tLogRow」コンポーネントでは、結果が見やすいように「モード」を「縦に表示」に設定しました。
「tJava」コンポーネントの設定
「tJava」コンポーネントでは、以下のとおり標準出力にメッセージを表示させて「tWarn」コンポーネントの通過後に処理が継続されていることを確認します。
System.out.println("After Warning");
実行結果
設定は以上です。実際にこのジョブを実行すると以下のように出力されます。
[statistics] connecting to socket on port 3558 [statistics] connected .----------------------------------. | #1. tLogRow_1 | +------------+---------------------+ | key | value | +------------+---------------------+ | moment | 2019-01-15 10:55:31 | | pid | wghHRg | | root_pid | wghHRg | | father_pid | wghHRg | | project | SANDBOX | | job | tWarn | | context | Default | | priority | 4 | | type | tWarn | | origin | tWarn_1 | | message | this is a warning | | code | 42 | +------------+---------------------+ After Warning [statistics] disconnected
まずはじめに「tWarn」によって発生した警告が「tLogCatcher」によってハンドリングされることで、警告内容が「tLogRow」によって表示されています。その後に処理が継続され「tJava」による標準出力へのメッセージ出力のAfter Warning
が表示されていることが分かります。
まとめ
以上、「tWarn」コンポーネントの紹介でした。
ジョブを実行する場合に「エラーでジョブを停止するまでもないが警告は発生させたい」というケースなどに利用できるコンポーネントだと思います。
それでは!